书写背景:电脑是M1芯片的,oracle数据库的镜像没有对应的版本,导致无法使用docker安装oracle数据库。
# 一、环境
# 1.1 相关信息
电脑信息:M1芯片,MacOS Monterey 12.2.1
服务器信息:腾讯云轻量级服务器
系统信息:CentOS Linux release 7.9.2009 (Core)
数据库管理软件: DBeaver、Navicat
Linux命令工具:Tabby
# 二、docker安装
# 2.1 安装docker
#yum包更新到最新
sudo yum -y update
#安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker ce:开源版(免费版) ee:企业版(收费版)
sudo yum -y install docker-ce
#安装完查看docker版本
docker -v
# 2.2 设置ustc的镜像
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。
ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。https://lug.ustc.edu.cn/wiki/mirrors/help/docker

#创建文件夹
sudo mkdir -p /etc/docker
#切换目录
cd /etc/docker
#创建并编辑daemon.json文件
vim /etc/docker/daemon.json
#重新加载
sudo systemctl daemon-reload
#重启docker
sudo systemctl restart docker
在daemon.json文件中输入如下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
# 2.3 Docker的启动与停止
#详细命令
#启动docker:
systemctl start docker
#停止docker:
systemctl stop docker
#重启docker:
systemctl restart docker
#查看docker状态:
systemctl status docker
#开机启动:
systemctl enable docker
#检查镜像是否为科大的
docker info
#查看docker帮助文档
docker help
#注意:systemctl命令是系统服务管理器指令

# 三、docker安装oracle11
# 3.1 安装oracle11
#获取阿里oracle镜像
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
#启动容器
docker run -d -p 1521:1521 --name oracle11g --restart=always registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
#查看容器名称和ID
docker ps
#进入容器
docker exec -it oracle11g bash
#切换到root账户(默认进入之后是oracle账户 输入密码:helowin
su root
#编辑环境变量/etc/profile文件
vi /etc/profile
# 在/etc/profile文件最后写上下面内容
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH
#加载环境变量
source /etc/profile
#创建软连接
ln -s $ORACLE_HOME/bin/sqlplus /usr/bin
#oracle用户
su - oracle
#登陆
sqlplus /nolog
#登陆
conn /as sysdba
#创建用户sys 是用户,sc0tt321密码 你自己设置
alter user sys identified by sc0tt321;
#设置密码有效期为无限制
alter profile default limit PASSWORD_LIFE_TIME UNLIMITED;
#创建用户(可选,根据需要)
create user mike identified by mima;
#授权
grant connect,resource,dba to mike;
#创建用户(可选,根据需要)
create user C##ZQTIS identified by mima;
#授权
grant connect,resource,dba to C##ZQTIS;
#查看版本号
SELECT * from v$version;
# 3.2 开放安全端口
在服务器的控制台创建新的规则。

# 3.3 使用Navicat进行测试

问题: 创建C##ZQTIS报错
“试图创建一个通用用户,必需要用C##或者c##开头”
报错信息:
ERROR at line 1:
ORA-65094: invalid local user or role name
解决方法:
alter session set "_ORACLE_SCRIPT"=true;
alter session set container=PDBORCL;